home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 2010-01-22 | 95.0 KB | 2,716 lines
 var PersonasRotator = { personasrotatorurlprefix:'url("', personasrotatorurlsuffix:'")', personaImagePreName:"personasrotator/", databaseResourceSiteName:"chrome://personasrotator/content/personasrotator/", openTabURI:"chrome://personasrotator/content/wr.html", currentimagefilename:"", moouseclickeventx:0, moouseclickeventy:0, currentpersonapositionvalues:"", currentpersonapositionxvalue:0, currentpersonapositionyvalue:0, currenteventx:0, currenteventy:0, moveonxpath:0, moveonypath:0, personasrotator:[], imagespecified:"no", uploadrequested:"no", currentarrayindex:0, newimage:new Image(), previewtabs:[], previewtabscopy:[], previewurl:null, CTRLpressed:false, tabtitle:null, personasrotatornewstabopened:"no", inmovemode:false, STRINGS:null, _shell:Components.classes["@mozilla.org/browser/shell-service;1"].getService(Components.interfaces.nsIShellService), previewTimer:null, PR:Components.classes["@personasrotator/startup;1"].getService().wrappedJSObject, preload: function (){ PersonasRotator.personaimagesarraymaker(); PersonasRotator.currentarrayindex=PersonasRotator.getCurrentarrayIndex(); PersonasRotator.newimage.src=PersonasRotator.assignFileURIToImage(PersonasRotator.personasrotator[PersonasRotator.currentarrayindex%PersonasRotator.personasrotator.length]); }, personaimagesarraymaker:function () { PersonasRotator.personasrotator=[]; var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getlibraryfileURI()); var container=PersonasRotatorRDF.rdfContainerUtils.MakeSeq(ds,PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator:library")); var genericpersonasseqenumurator=container.GetElements(); var namePredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#name"); while (genericpersonasseqenumurator.hasMoreElements()) { var collection=genericpersonasseqenumurator.getNext(); var nametarget=ds.GetTarget(collection,namePredicate,true); if (nametarget) { var name = nametarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } var currentcollectionname=name; var collectionContainer=PersonasRotatorRDF.rdfContainerUtils.MakeSeq(ds,PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator:"+PersonasRotator.createEncodedName(currentcollectionname)+"backs")); var genericpersonaslienumurator=collectionContainer.GetElements(); var locationPredicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#location"); while (genericpersonaslienumurator.hasMoreElements()) { var genericpersonas=genericpersonaslienumurator.getNext(); var imagelocationtarget=ds.GetTarget(genericpersonas,locationPredicate,true); var imagelocation = currentcollectionname+"/Personas/"+imagelocationtarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; PersonasRotator.personasrotator.push(imagelocation); } } }, getlibraryfileURI : function () { var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("personasrotator"); file.append("library.rdf"); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var URL = ios.newFileURI(file); return URL.spec; }, writelastimageindex:function (event) { PersonasRotatorFileIO.write(PersonasRotator.getChromeFile("config.abc"),PersonasRotator.currentarrayindex,'w',"UTF-8"); }, getChromeFile:function(filename) { if (filename==undefined || filename==null ) return; var namesplitarray=filename.split("/"); var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("personasrotator"); for (var i=0;i<namesplitarray.length;i++) { file.append(namesplitarray[i]); } return file; }, getCurrentarrayIndex:function() { var currentIndex; var indexes=PersonasRotatorFileIO.read(PersonasRotator.getChromeFile("config.abc"),"UTF-8"); if (indexes.indexOf(",")==-1) { currentIndex=parseInt(indexes); } else { var splitArray=indexes.split(","); var wm = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator); var enumerator = wm.getEnumerator("navigator:browser"); var win = null; var winarray=[]; while (enumerator.hasMoreElements()) { win = enumerator.getNext(); winarray.push(win); } currentIndex=splitArray[winarray.length-1]; } return !isNaN(currentIndex) ? currentIndex : 0; }, assignFileURIToImage:function(filename){ if (filename==undefined || filename==null ) return; var file=PersonasRotator.getChromeFile(filename); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var URL = ios.newFileURI(file); return URL.spec; }, mainWindowLoadHandler:function(event) { PersonasRotator.instalandupdatecheck(); gBrowser.addEventListener("DOMContentLoaded",PersonasRotator.aboutblanklistener,true); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", PersonasRotator.handlepop, false); PersonasRotator.tabtitle=document.getAnonymousElementByAttribute(document.getElementById("content"), "anonid", "tbstringbundle").getString("tabs.untitled"); //window.document.addEventListener("keydown",PersonasRotator.CTRLKeydownListener,false); //window.document.addEventListener("keyup",PersonasRotator.CTRLKeyupListener,false); //PersonasRotator.bringPersonas(); //URLBarSetURI = PersonasRotator.newURLBarSetURI; //PersonasRotator.requestDesktopPersonaChange(); PersonasRotator.STRINGS=document.getElementById("personasrotator-strings"); }, instalandupdatecheck:function () { var personasrotatorprefsinstance = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var personasrotatorversion = personasrotatorprefsinstance.getCharPref("extensions.personasrotator.currentversion"); var personasrotatoretensionmanagerinstance = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager); var personasrotatorextension = personasrotatoretensionmanagerinstance.getItemForID("{6e73f6b7-b9ab-44b8-b744-6393e3c2e351}"); var personasrotatornewversion = personasrotatorextension.version; if (personasrotatorversion != personasrotatornewversion) { personasrotatorprefsinstance.setCharPref("extensions.personasrotator.currentversion",personasrotatornewversion); gBrowser.addEventListener('load',PersonasRotator.personasrotatorFirstRun, true); } }, personasrotatorFirstRun:function () { gBrowser.removeEventListener('load', PersonasRotator.personasrotatorFirstRun, true); var personasrotatorprefsinstance = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var personasrotatorinstalled =personasrotatorprefsinstance.getBoolPref("extensions.personasrotator.installed"); var personasrotatorUrl; if (!personasrotatorinstalled) { personasrotatorprefsinstance.setBoolPref("extensions.personasrotator.installed",true); personasrotatorUrl='http://barisderin.com/?p=119'; gBrowser.selectedTab = gBrowser.addTab(personasrotatorUrl); } else { personasrotatorUrl='http://barisderin.com/?p=120'; gBrowser.selectedTab = gBrowser.addTab(personasrotatorUrl); } }, aboutblanklistener:function (event) { if (event.originalTarget instanceof HTMLDocument) { var doc = event.originalTarget; if (event.originalTarget.defaultView.frameElement) { while (doc.defaultView.frameElement) { doc=doc.defaultView.frameElement.ownerDocument; } } if (doc.defaultView.location.href.toString().search(PersonasRotator.openTabURI)!=-1) { doc.title=PersonasRotator.tabtitle; if (PersonasRotator.imagespecified=="no") { if (PersonasRotator.currentarrayindex<PersonasRotator.personasrotator.length) { PersonasRotator.currentimagefilename=PersonasRotator.personasrotator[PersonasRotator.currentarrayindex]; PersonasRotator.currentarrayindex++; } else { PersonasRotator.currentarrayindex=0; PersonasRotator.currentimagefilename=PersonasRotator.personasrotator[PersonasRotator.currentarrayindex]; PersonasRotator.currentarrayindex++; } PersonasRotatorFileIO.write(PersonasRotator.getChromeFile("config.abc"),PersonasRotator.currentarrayindex,'w',"UTF-8"); } PersonasRotator.showThePersonaAtAboutBlank(doc,PersonasRotator.currentimagefilename); if (PersonasRotator.inpreview()) { var container = gBrowser.tabContainer; container.addEventListener("TabClose", PersonasRotator.exampleTabRemoved, false); } if (PersonasRotator.currentarrayindex==PersonasRotator.personasrotator.length ) { PersonasRotator.newimage.src=PersonasRotator.assignFileURIToImage(PersonasRotator.personasrotator[0]); } else { PersonasRotator.newimage.src=PersonasRotator.assignFileURIToImage(PersonasRotator.personasrotator[PersonasRotator.currentarrayindex]); } if(PersonasRotator.currentimagefilename!=undefined){ doc.addEventListener("mousedown",PersonasRotator.mouseclickondocument,false); doc.addEventListener("mouseup",PersonasRotator.mouseupondocument,false); } if (PersonasRotator.uploadrequested=='yes'){ PersonasRotator.uploadPersona(event,doc); } PersonasRotator.imagespecified="no"; PersonasRotator.uploadrequested='no'; } if (doc.defaultView.location.href.toString().search("chrome://personasrotator/content/cc.html")!=-1) { PersonasRotator.revertToPersonas(); } try { var domain=doc.domain; } catch (err) { return; } if (!domain) { return; } if (domain.search(/personasrotator\.com$/) != -1) { if (doc.defaultView.location.href.toString().search("http://personasrotator.com/persona/gallery/")!=-1) { if (doc.getElementById("extlogininfo")!=null) { if(!PersonasRotator.hasClass(doc.getElementById("extlogininfo"),"handled")) { if(PersonasRotator.hasClass(doc.getElementById("extlogininfo"),"notlogged")) { doc.getElementById("extlogininfo").innerHTML='<a class="extinfoanchor" title="Please login to preview this persona" href="member.php">Please login to preview this persona</a>'; PersonasRotator.addClass(doc.getElementById("extlogininfo"),"handled"); } } } if(doc.getElementById("extprebutdiv")!=null) { if(doc.getElementById("extprebutton")==null) { doc.getElementById("extprebutdiv").innerHTML='<div style="background-color: rgb(139, 0, 0); width: 145px; height: 17px; cursor: pointer; padding-top: 3px; padding-bottom: 2px; background-repeat: no-repeat; background-image: url(http://personasrotator.com/media/images/indexpage/previewbutback.png);background-position: 52px 6px;" class="extinfoanchor" id="extprebutton" onclick="if(window.PersonasRotatorPreview){PersonasRotatorPreview.bringThePreviewDiv(event);} else{alert(\'Preview Module has not loaded yet. Please wait till the page is completely loaded.\')}" onmouseover="this.style.backgroundPosition=\'52px -21px\';" onmouseout="this.style.backgroundPosition=\'52px 6px\';"></div>'; PersonasRotator.addClass(doc.getElementById("extprebutdiv"),"extuser"); var scr=doc.createElement("script"); scr.setAttribute("src","http://personasrotator.com/inc/js/preview.js"); scr.setAttribute("type","text/javascript"); doc.getElementsByTagName("head")[0].appendChild(scr); doc.addEventListener("personasrotatorSendToDesktopForPreview",PersonasRotator.sendToDesktopForPreview,false); doc.addEventListener("personasrotatorPreviewInstall",PersonasRotator.previewInstallFromSite,false); } } } } } }, addClass:function(domnode, passedclass){ if (!PersonasRotator.hasClass(domnode, passedclass)){ if (domnode.className==""){domnode.className = passedclass;} else{domnode.className+=" "+passedclass;} } }, hasClass:function(domnode,passedclass){ var searchpattern=new RegExp("( |^)"+passedclass+"($| )"); if (searchpattern.test(domnode.className)) return true; return false; }, removeClass : function(domnode, passedclass){ var searchpattern = new RegExp("( |^)"+passedclass+"($| )"); var classtring=domnode.className; classtring=classtring.replace(searchpattern, "$1"); classtring=classtring.replace(/ $/, ""); domnode.className=classtring; }, previewInstallFromSite:function(event){ var doc; if (event.target.nodeName=="#document") { doc=event.target; try { var domain=doc.domain; } catch (err) { return; } if (!domain) { return; } if (domain.search(/personasrotator\.com$/) != -1) { if(doc.defaultView.location.href.toString().search(/personasrotator\.com\/persona\/gallery/) !=-1 ){ openDialog('chrome://personasrotator/content/save.xul',"PersonasRotatorChoose"+Math.random(),"chrome,close=yes,centerscreen,modal",doc); } } } }, sendToDesktopForPreview:function(event){ var doc; if (event.target.nodeName=="#document") { doc=event.target; try { var domain=doc.domain; } catch (err) { return; } if (!domain) { return; } if (domain.search(/personasrotator\.com$/) != -1) { if(doc.defaultView.location.href.toString().search(/personasrotator\.com\/persona\/gallery/) !=-1 ){ var previewRequestObject={url:doc.defaultView.wrappedJSObject.PersonasRotatorPose.src,backgroundColor:doc.defaultView.wrappedJSObject.PersonasRotatorPose.backgroundColor,position:doc.defaultView.wrappedJSObject.PersonasRotatorPose.personasrotatorposition} PersonasRotator.previewThePersonaOnDesktop(previewRequestObject); } } } }, showThePersonaAtAboutBlank:function(doc,currentimagefilename) { var pos=PersonasRotator.assignPersonaPosition(currentimagefilename); var backColor=PersonasRotator.assignPersonaBackgroundColor(currentimagefilename); doc.styleSheets[0].insertRule("body{background-position:"+(pos)+";background-repeat:no-repeat;background-image:"+PersonasRotator.assignPersonaImage(currentimagefilename)+";background-color:"+PersonasRotator.retrieveBackgroundColor(backColor)+";}",doc.styleSheets[0].cssRules.length); if(pos=="center center"){ doc.defaultView.personaCenterNeed=true; doc.defaultView.imageSizeRetrieveCompleted=false; var image=new Image(); image.src=PersonasRotator.assignFileURIToImage(PersonasRotator.retrievetabpersonaimage(doc)); image.onload=function(event){ doc.defaultView.personasrotatorImageWidth=image.width; doc.defaultView.personasrotatorImageHeight=image.height; doc.defaultView.imageSizeRetrieveCompleted=true; } } }, assignPersonaPosition:function(currentimagefilename) { return PersonasRotator.inpreview() ? "0px 0px" : (currentimagefilename==undefined ? "0px 0px" : PersonasRotator.retrievePersonaPositionForTheImage(currentimagefilename)); }, assignPersonaBackgroundColor:function(currentimagefilename) { return parseInt(PersonasRotator.retrievePersonaBackgroundColorForTheImage(PersonasRotator.currentimagefilename)); }, autoCenterPersona:function(paddingnode,imagewidth,imageheight){ paddingnode.style.backgroundPosition=PersonasRotator.findHorizontalPositionOffset(null,imagewidth,paddingnode)+"px "+PersonasRotator.findVerticalPositionOffset(null,imageheight,paddingnode)+"px"; }, retrievePersonaPositionForTheImage:function(filename) { if (filename==undefined || filename==null ) return; var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getTheURIFromFileName(PersonasRotator.createIndividualRDFFilename(filename))); var leafName=PersonasRotator.getTheLeafNameFromFileNameString(filename); var theImageNode = PersonasRotatorRDF.rdfService.GetResource(PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename)); var positionPredicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#position"); var positiontarget=ds.GetTarget(theImageNode,positionPredicate,true); if (positiontarget!=null) var position= positiontarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; else return "0px 0px"; return position; }, retrievePersonaBackgroundColorForTheImage:function(filename) { if (filename==undefined || filename==null ) return; var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getTheURIFromFileName(PersonasRotator.createIndividualRDFFilename(filename))); var leafName=PersonasRotator.getTheLeafNameFromFileNameString(filename); var theImageNode = PersonasRotatorRDF.rdfService.GetResource(PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename)); var backgroundColorPredicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#backgroundcolor"); var backgroundColortarget=ds.GetTarget(theImageNode,backgroundColorPredicate,true); if (backgroundColortarget!=null) var backgroundColor= backgroundColortarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; else return "0px 0px"; return backgroundColor; }, getTheURIFromFileName:function(filename) { if (filename==undefined || filename==null ) return; var namesplitarray=filename.split("/"); var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("personasrotator"); for (var i=0;i<namesplitarray.length;i++) { file.append(namesplitarray[i]); } var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var URL = ios.newFileURI(file); return URL.spec; }, createIndividualRDFFilename:function(filename) { if (filename==undefined || filename==null ) return; var array=filename.split("."); var imageextension=array[array.length-1]; var rdffilename=filename+".rdf"; var namesplitarray=rdffilename.split("/"); var createdRDFName=""; for (var i=0;i<namesplitarray.length;i++) { if(i==namesplitarray.length-1) {createdRDFName+=namesplitarray[i];break;} if(i!=1) createdRDFName+=namesplitarray[i]+"/"; else createdRDFName+="RDFs/"; } return createdRDFName; }, getTheLeafNameFromFileNameString:function(filename) { if (filename==undefined || filename==null ) return; var patharray=filename.split("/"); var leafName=patharray[patharray.length-1]; return leafName; }, inpreview:function() { for (var i=0;i<PersonasRotator.previewtabs.length;i++) { if (gBrowser.selectedTab==PersonasRotator.previewtabs[i]) return true; } return false; }, assignPersonaImage:function(currentimagefilename) { return PersonasRotator.inpreview() ? 'url("'+PersonasRotator.previewurl +'")' : (currentimagefilename==undefined ? "none" : PersonasRotator.personasrotatorurlprefix+PersonasRotator.assignFileURIToImage(currentimagefilename)+PersonasRotator.personasrotatorurlsuffix); }, exampleTabRemoved : function(event) { PersonasRotator.previewtabscopy=[]; for (var i=0;i<PersonasRotator.previewtabs.length;i++) { if (event.target==PersonasRotator.previewtabs[i]) {continue;} else {PersonasRotator.previewtabscopy.push(PersonasRotator.previewtabs[i])} } if (PersonasRotator.previewtabs.length==1) PersonasRotator.previewtabs=[]; else PersonasRotator.previewtabs=PersonasRotator.previewtabscopy; if(PersonasRotator.previewtabs.length==0) gBrowser.tabContainer.removeEventListener("TabClose", PersonasRotator.exampleTabRemoved, false); }, mouseclickondocument:function (event) { if (event.button==0 && PersonasRotator.CTRLpressed==true) { if (this.defaultView.personaCenterNeed) { if(this.defaultView.imageSizeRetrieveCompleted){ PersonasRotator.autoCenterPersona(this.body,this.defaultView.personasrotatorImageWidth,this.defaultView.personasrotatorImageHeight); this.defaultView.personaCenterNeed=false; } else { return; } } PersonasRotator.inmovemode=true; this.body.style.cursor="move"; this.addEventListener("mousemove",PersonasRotator.documenttomousemoveo,false); this.addEventListener("mouseup",PersonasRotator.mouseupondocument,false); PersonasRotator.moouseclickeventx=event.pageX; PersonasRotator.moouseclickeventy=event.pageY; PersonasRotator.currentpersonapositionvalues=this.defaultView.getComputedStyle(this.body, null).getPropertyValue("background-position") PersonasRotator.currentpersonapositionxvalue=parseInt(PersonasRotator.currentpersonapositionvalues.split("px")[0]); PersonasRotator.currentpersonapositionyvalue=parseInt(PersonasRotator.currentpersonapositionvalues.split("px")[1]); event.stopPropagation(); } }, documenttomousemoveo:function (event) { if (PersonasRotator.inmovemode) { PersonasRotator.currenteventx=event.pageX; PersonasRotator.currenteventy=event.pageY; PersonasRotator.moveonxpath=PersonasRotator.currenteventx-PersonasRotator.moouseclickeventx; PersonasRotator.moveonypath=PersonasRotator.currenteventy-PersonasRotator.moouseclickeventy; placeonx=PersonasRotator.currentpersonapositionxvalue+PersonasRotator.moveonxpath; placeony=PersonasRotator.currentpersonapositionyvalue+PersonasRotator.moveonypath; this.body.style.backgroundPosition=placeonx+"px "+placeony+"px"; this.body.style.personaRepeat="no-repeat"; } event.stopPropagation(); }, mouseupondocument:function (event) { if (event.button==0) { PersonasRotator.inmovemode=false; this.body.style.cursor="default"; this.removeEventListener("mousemove",PersonasRotator.documenttomousemoveo,false); this.removeEventListener("mouseup",PersonasRotator.mouseupondocument,false); if (PersonasRotator.inpreview()) return; PersonasRotator.currentpersonapositionvalues=""; PersonasRotator.currentpersonapositionxvalue=0; PersonasRotator.currentpersonapositionyvalue=0; PersonasRotator.currenteventx=0; PersonasRotator.currenteventy=0; PersonasRotator.moveonxpath=0; PersonasRotator.moveonypath=0; this.styleSheets[0].insertRule("body{background-position:"+this.defaultView.getComputedStyle(this.body, null).getPropertyValue("background-position")+";}",this.styleSheets[0].cssRules.length); this.body.removeAttribute("style"); PersonasRotator.savePersonaPositionGlobally(PersonasRotator.retrievetabpersonaimage(this),this); event.stopPropagation(); } }, CTRLupondocument:function (doc) { doc.body.style.cursor="default"; doc.removeEventListener("mousemove",PersonasRotator.documenttomousemoveo,false); doc.removeEventListener("mouseup",PersonasRotator.mouseupondocument,false); if (PersonasRotator.inpreview()) return; PersonasRotator.currentpersonapositionvalues=""; PersonasRotator.currentpersonapositionxvalue=0; PersonasRotator.currentpersonapositionyvalue=0; PersonasRotator.currenteventx=0; PersonasRotator.currenteventy=0; PersonasRotator.moveonxpath=0; PersonasRotator.moveonypath=0; doc.styleSheets[0].insertRule("body{background-position:"+doc.defaultView.getComputedStyle(doc.body, null).getPropertyValue("background-position")+";}",doc.styleSheets[0].cssRules.length); doc.body.removeAttribute("style"); PersonasRotator.savePersonaPositionGlobally(PersonasRotator.retrievetabpersonaimage(doc),doc); }, savePersonaPositionGlobally:function(filename,doc) { if (filename==undefined) return; PersonasRotator.savePersonaPositionForTheImage(filename,doc); PersonasRotator.updatePersonaPositionForTheImageOnLibraryRdf(filename,doc); PersonasRotator.updatePersonaPositionForTheImageOnCollectionRdf(filename,doc); }, retrievetabpersonaimage:function (doc) { if (doc.defaultView.personasrotatorconfigobject != undefined ) { return doc.defaultView.personasrotatorconfigobject.compositefilename; } var personaImageComputedCssValue=doc.defaultView.getComputedStyle(doc.body, null).getPropertyValue("background-image"); if(personaImageComputedCssValue!="none"){ var tabpersonaimagenamesplitarray=personaImageComputedCssValue.split(/url\(\s*["']?([^"']+)["']?\s*\)/)[1].split(PersonasRotator.personaImagePreName)[1].replace(/\\/g,""); } else { return undefined; } return PersonasRotator.createDecodedNameFromFileURI(tabpersonaimagenamesplitarray); }, savePersonaPositionForTheImage:function(filename,doc) { var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getTheURIFromFileName(PersonasRotator.createIndividualRDFFilename(filename))); var leafName=PersonasRotator.getTheLeafNameFromFileNameString(filename); var theImageNode = PersonasRotatorRDF.rdfService.GetResource(PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename)); var positionPredicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#position"); var positiontarget=ds.GetTarget(theImageNode,positionPredicate,true); if (positiontarget!=null) var position= positiontarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; else {return} var newposition; if(doc.defaultView.location.href.toString().search(/personasrotator\.com\/persona\/gallery/) ==-1 ){ newposition=doc.defaultView.getComputedStyle(doc.body, null).getPropertyValue("background-position"); } else { newposition=doc.defaultView.wrappedJSObject.PersonasRotatorPose.personasrotatorposition; } var predicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#position"); var oldtarget=PersonasRotatorRDF.rdfService.GetLiteral(position); var newtarget=PersonasRotatorRDF.rdfService.GetLiteral(newposition); ds.Change(theImageNode,predicate,oldtarget,newtarget); try{ ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush(); } catch(err){ } }, updatePersonaPositionForTheImageOnLibraryRdf:function(filename,doc) { var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getlibraryfileURI()); var leafName=PersonasRotator.getTheLeafNameFromFileNameString(filename); var theImageNode = PersonasRotatorRDF.rdfService.GetResource(PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename)); var positionPredicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#position"); var positiontarget=ds.GetTarget(theImageNode,positionPredicate,true); if (positiontarget!=null) var position= positiontarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; else {return} var newposition=doc.defaultView.getComputedStyle(doc.body, null).getPropertyValue("background-position"); var predicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#position"); var oldtarget=PersonasRotatorRDF.rdfService.GetLiteral(position); var newtarget=PersonasRotatorRDF.rdfService.GetLiteral(newposition); ds.Change(theImageNode,predicate,oldtarget,newtarget); try{ ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush(); } catch(err){ } }, updatePersonaPositionForTheImageOnCollectionRdf:function(filename,doc) { var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getTheURIFromFileName(PersonasRotator.createCollectionRDfFileName(filename))); var leafName=PersonasRotator.getTheLeafNameFromFileNameString(filename); var theImageNode = PersonasRotatorRDF.rdfService.GetResource(PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename)); var positionPredicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#position"); var positiontarget=ds.GetTarget(theImageNode,positionPredicate,true); if (positiontarget!=null) var position= positiontarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; else {return} var newposition=doc.defaultView.getComputedStyle(doc.body, null).getPropertyValue("background-position"); var predicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#position"); var oldtarget=PersonasRotatorRDF.rdfService.GetLiteral(position); var newtarget=PersonasRotatorRDF.rdfService.GetLiteral(newposition); ds.Change(theImageNode,predicate,oldtarget,newtarget); try{ ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush(); } catch(err){ } }, CTRLKeydownListener:function(event){ if (event.which==17) { PersonasRotator.CTRLpressed=true; if (window.content.location.href.toString().search("http://personasrotator.com/persona/gallery/")!=-1) { if(window.content.document.getElementById("pre_info")!=null) { var changeCTRLpressedEvent = window.content.document.createEvent("Events"); changeCTRLpressedEvent.initEvent("CTRLKeydownpressed", false, false, window.content, null); window.content.document.dispatchEvent(changeCTRLpressedEvent); } } } }, CTRLKeyupListener:function(event){ if (event.which==17) { PersonasRotator.CTRLpressed=false; if (window.content.location.href.toString().search(PersonasRotator.openTabURI)!=-1) { if(PersonasRotator.inmovemode==true) {PersonasRotator.inmovemode=false;PersonasRotator.CTRLupondocument(window.content.document);} } if (window.content.location.href.toString().search("http://personasrotator.com/persona/gallery/")!=-1) { if(window.content.document.getElementById("pre_info")!=null) { var changeCTRLpressedEvent = window.content.document.createEvent("Events"); changeCTRLpressedEvent.initEvent("CTRLKeyuppressed", false, false, window.content, null); window.content.document.dispatchEvent(changeCTRLpressedEvent); } } } }, handlepop:function(event){ if (document.popupNode.ownerDocument.location.href==PersonasRotator.openTabURI && !PersonasRotator.inpreview()) { var shownormalcontextcheckbox=document.getElementById("shownormalcontextcheckbox"); var personasrotatorprefsinstance = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var showpersonasrotatortabnormalcontext = personasrotatorprefsinstance.getBoolPref("extensions.personasrotator.showpersonasrotatortabnormalcontext"); if(showpersonasrotatortabnormalcontext){ document.getElementById("personasrotator-normalcontext-uploadpersona").setAttribute("hidden","false"); document.getElementById("personasrotator-normalcontext-visitpersonapage").setAttribute("hidden","false"); } else{ if(!PersonasRotator.hasClass(document.popupNode.ownerDocument.body,"uploadformshowing")){ event.preventDefault(); document.getElementById("PersonasRotatorTabContextMenu").openPopupAtScreen( event.screenX, event.screenY,false ); } else { var rightClickNode=document.popupNode; var normalContextShowable=false; while(rightClickNode!=null){ if(rightClickNode==document.popupNode.ownerDocument.getElementById("personasrotatoruploadform")){ normalContextShowable=true; } rightClickNode=rightClickNode.parentNode; } if(!normalContextShowable){ event.preventDefault(); document.getElementById("PersonasRotatorTabContextMenu").openPopupAtScreen( event.screenX, event.screenY,false ); } else{ document.getElementById("personasrotator-normalcontext-uploadpersona").setAttribute("hidden","true"); document.getElementById("personasrotator-normalcontext-visitpersonapage").setAttribute("hidden","true"); } } } } else { document.getElementById("personasrotator-normalcontext-uploadpersona").setAttribute("hidden","true"); document.getElementById("personasrotator-normalcontext-visitpersonapage").setAttribute("hidden","true"); } }, handleTabContextMenuPopup: function (event) { }, revertToPersonas:function(){ PersonasRotator.bringPersonas(); }, handlePreviewCommand:function(event){ PersonasRotator.previewurl=gContextMenu.imageURL; PersonasRotator.imagespecified='yes'; var k = gBrowser.addTab(PersonasRotator.openTabURI); gBrowser.selectedTab=k; PersonasRotator.previewtabs.push(k); }, populateItems : function () { var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getlibraryfileURI()); var container=PersonasRotatorRDF.rdfContainerUtils.MakeSeq(ds,PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator:library")); var genericpersonasseqenumurator=container.GetElements(); var namePredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#name"); while (genericpersonasseqenumurator.hasMoreElements()) { var collection=genericpersonasseqenumurator.getNext(); var nametarget=ds.GetTarget(collection,namePredicate,true); if (nametarget) { var name = nametarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } var newmenuitem=document.createElement("menuitem"); newmenuitem.setAttribute("label",name); newmenuitem.setAttribute("id",name+"menuitem"); newmenuitem.setAttribute("oncommand","PersonasRotator.savepreview(event.target.getAttribute('label'),PersonasRotator.retrievetabpersonaimageforhttp(document.popupNode.ownerDocument),document.popupNode.ownerDocument);"); newmenuitem.setAttribute("class","collection-menuitem"); document.getElementById("abc-savepreview-menu-popup").appendChild(newmenuitem); } }, retrievetabpersonaimageforhttp:function (doc) { return doc.defaultView.getComputedStyle(doc.body, null).getPropertyValue("background-image").split(/url\(\s*["']?([^"']+)["']?\s*\)/)[1].replace(/\\/g,""); }, retrievetabpersonaimagefrompersonasrotator:function (doc) { return doc.defaultView.getComputedStyle(doc.getElementById("pre_main"), null).getPropertyValue("background-image").split(/url\(\s*["']?([^"']+)["']?\s*\)/)[1].replace(/\\/g,""); }, clearItems:function (event){ var menupopupnode=event.target; var length=menupopupnode.childNodes.length; for (var f=length - 1; 0<=f;f--) { menupopupnode.removeChild(menupopupnode.childNodes[f]); } }, savepreview:function(chosencolname,url,doc) { var source = PersonasRotator.createNewURIfromHttpURL(url); var filem=PersonasRotator.getTheFileThePreviewImageWillBeSaved(chosencolname,source,url,doc); PersonasRotator.downloadAndSaveThePrevieImage(chosencolname,source,filem,doc); }, createNewURIfromHttpURL:function(url) { var io = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); return io.newURI(url, "UTF8", null); }, getTheFileThePreviewImageWillBeSaved: function(chosencolname,source,url,doc) { var patharray= source.path.split("/"); var leafName=PersonasRotator.createDecodedNameFromFileURI(patharray[patharray.length-1]); var createdCompositeFileName=chosencolname+"/"+"Personas"+"/"+leafName; var filename=PersonasRotator.checkNameCollison(createdCompositeFileName); doc.defaultView.personasrotatorpreviewfilename=filename; return PersonasRotator.getChromeFile(filename); }, checkNameCollison: function (filename) { var file =PersonasRotator.getChromeFile(filename); var inc=1; var changedname=""; while (file.exists()) { inc++; var namesplitarray=filename.split("/"); for (var i=0;i<namesplitarray.length;i++) { if(i==namesplitarray.length-1) { var array=namesplitarray[i].split("."); var imageextension=array[array.length-1]; var newLeafName=namesplitarray[i].replace("."+imageextension,"("+inc+")"+"."+imageextension); changedname+=newLeafName; break; } changedname+=namesplitarray[i]+"/"; } filename=changedname; file =PersonasRotator.getChromeFile(filename); changedname=""; } return filename; }, downloadAndSaveThePrevieImage: function (chosencolname,source,filem,doc) { var persist=Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist); persist.persistFlags=Components.interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_REPLACE_EXISTING_FILES; persist.persistFlags |=Components.interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION; persist.progressListener={ onProgressChange: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress) { }, onStateChange: function(aWebProgress, aRequest, aFlag, aStatus) { if(aFlag==327696){ PersonasRotator.prepareForPreviewImageThumbSave(chosencolname,doc.defaultView.personasrotatorpreviewfilename,doc); } }, } persist.saveURI(source, null, null, null, null, filem); }, createTheThumbandSave:function(ctx,img,canvas,filey,doc,chosencolname){ ctx.clearRect(0,0,138,109); var array=img.src.split("."); var imageextension=array[array.length-1]; if(imageextension!="png" && imageextension!="gif") { ctx.fillStyle="#f5f5f5"; ctx.fillRect(0, 0, 138, 109); } var imagewidth=img.naturalWidth; var imageheight=img.naturalHeight; var widthratio=imagewidth/138.0; var heightratio=imageheight/109.0; var correctratio=(widthratio>heightratio) ? widthratio :heightratio; var heightforresize=imageheight/correctratio; var widthforresize=imagewidth/correctratio; var verticalposition=(109-heightforresize)/2; var horiziontalposition=(138-widthforresize)/2; ctx.drawImage(img,horiziontalposition,verticalposition,widthforresize,heightforresize); PersonasRotator.saveCanvas(canvas,filey.path,chosencolname,doc); }, prepareForPreviewImageThumbSave:function (chosencolname,filename,doc) { var inc=0; var filey = PersonasRotator.getThumbFile(filename); var img = new Image(); var canvas=document.getElementById("PersonasRotatorMainCanvas"); var ctx = canvas.getContext('2d'); img.onload = function() { window.setTimeout(function(){ try{ PersonasRotator.createTheThumbandSave(ctx,img,canvas,filey,doc,chosencolname); } catch(err){ looper(inc); } },1); } var fileyx =PersonasRotator.getChromeFile(filename); var iox = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var targetx = iox.newFileURI(fileyx); function looper(inc) { window.setTimeout(function(){ try{ PersonasRotator.createTheThumbandSave(ctx,img,canvas,filey,doc,chosencolname); } catch(err){ looper(inc++); } },(inc+1)*50); } img.setAttribute("src",targetx.spec); }, getThumbFile:function(filename) { var createdThumbImageName=PersonasRotator.createThumbImageName(filename); return PersonasRotator.getChromeFile(createdThumbImageName); }, createThumbImageName:function(filename){ var namesplitarray=filename.split("/"); var createdThumbImageName=""; for (var i=0;i<namesplitarray.length;i++) { if(i==namesplitarray.length-1) {createdThumbImageName+="Thumb_"+namesplitarray[i];break;} if(i!=1) createdThumbImageName+=namesplitarray[i]+"/"; else createdThumbImageName+="Thumbs/"; } return createdThumbImageName; }, saveCanvas:function (canvas, destFile,chosencolname,doc) { var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(destFile); var io = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); var source = io.newURI(canvas.toDataURL(PersonasRotator.createMIMEType(destFile) , ""), "UTF8", null); var target = io.newFileURI(file) var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist); persist.persistFlags = Components.interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_REPLACE_EXISTING_FILES; persist.persistFlags |= Components.interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION; persist.progressListener = { onStateChange: function(aWebProgress, aRequest, aFlag, aStatus){ if(aFlag==327696){ PersonasRotator.createOtherImageRequirements(chosencolname,doc.defaultView.personasrotatorpreviewfilename,doc) } } } persist.saveURI(source, null, null, null, null, file); }, createMIMEType:function(destFile){ if(destFile.search(/\.png$/i)!=-1) return "image/png"; if(destFile.search(/\.jpg$/i)!=-1 || destFile.search(/\.jpeg$/i)!=-1) return "image/jpeg"; if(destFile.search(/\.svg$/i)!=-1) return "image/svg+xml"; return "image/png"; }, createOtherImageRequirements:function (chosencolname,filename,doc) { PersonasRotator.createEmptyRdf(filename,doc); PersonasRotator.savePersonaPositionForTheImage(filename,doc); PersonasRotator.addImageResourceNodeToLibraryDatabase(chosencolname,filename,doc); PersonasRotator.addImageResourceNodeToCollectionDatabase(chosencolname,filename,doc); PersonasRotator.tryToPopulatePersonaWindow(chosencolname,filename); PersonasRotator.personaimagesarraymaker(); //var imagelocation=filename; //PersonasRotator.currentimagefilename=imagelocation; //PersonasRotator.imagespecified='yes'; //PersonasRotator.newimage.src=PersonasRotator.assignFileURIToImage(imagelocation); PersonasRotator.refreshPreviewTabsArray(); doc.defaultView.personasrotatorpreviewfilename=null; var personasrotatorconfigobject=new Object(); personasrotatorconfigobject.compositefilename=filename; doc.defaultView.personasrotatorconfigobject=personasrotatorconfigobject; if(doc.defaultView.location.href.toString().search(/personasrotator\.com\/persona\/gallery/) !=-1 ){ var PersonasRotatorInstalledEvent = doc.createEvent("Events"); PersonasRotatorInstalledEvent.initEvent("PersonasRotatorInstalled", false, false, doc.defaultView, null); doc.dispatchEvent(PersonasRotatorInstalledEvent); } //PersonasRotator.createAlertPrompt("Persona installed successfully! Open a new tab to view it."); }, retrieveDesktopBackgroundColor:function(){ return Components.classes["@mozilla.org/browser/shell-service;1"].getService(Components.interfaces.nsIShellService).desktopBackgroundColor; }, createEmptyRdf:function(filename,doc){ var descriptionForImage,nameForImage,locationForImage,positionForImage,defaultForImage,activecollectioname,version,uploaded,siteURI,source,screenRes,tagsForImage,versionForImage,uploadedForImage,siteURIForImage,sourceForImage,screenResForImage,backgroundColorForImage; var preSource=""; var collename=filename.split("/")[0]; if(doc.defaultView.location.href.toString().search(/personasrotator\.com\/persona\/gallery/) !=-1 ){ preSource="site"; } if(preSource=="site"){ nameForImage=doc.getElementsByClassName("nameForImage")[0].firstChild.nodeValue.replace(/&/g,"&"); locationForImage=PersonasRotator.getTheLeafNameFromFileNameString(filename).replace(/&/g,"&"); descriptionForImage=doc.getElementsByClassName("personadescription")[0].textContent.replace(/&/g,"&").replace(/"/g,'\\"'); positionForImage="0px 0px"; defaultForImage="false"; tagsForImage=collename.replace(/&/g,"&")+","+PersonasRotator.retrieveTagsFromSite(doc,collename).replace(/&/g,"&"); versionForImage="0.1"; uploadedForImage="true"; siteURIForImage=doc.defaultView.location.href.toString().replace(/&/g,"&"); sourceForImage="site"; screenResForImage=doc.getElementById("pre_main_screenRes").className; backgroundColorForImage=doc.getElementById("pre_main_backgroundColor").className; } else { nameForImage=PersonasRotator.getTheLeafNameFromFileNameString(filename).replace(/\.\w+$/,"").replace(/&/g,"&"); locationForImage=PersonasRotator.getTheLeafNameFromFileNameString(filename).replace(/&/g,"&"); descriptionForImage="undefined"; positionForImage="0px 0px"; defaultForImage="false"; tagsForImage=filename.split("/")[0].replace(/&/g,"&"); versionForImage="0.1"; uploadedForImage="false"; siteURIForImage="null".replace(/&/g,"&"); sourceForImage="external"; screenResForImage=screen.width+"x"+screen.height; backgroundColorForImage=PersonasRotator.retrieveDesktopBackgroundColor(); } var RDFstring='<?xml version="1.0"?>'+'<RDF:RDF xmlns:personasrotator="urn:personasrotator#" xmlns:NC="http://home.netscape.com/NC-rdf#" xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">'+ '<RDF:Description RDF:about="'+(PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename)).replace(/&/g,"&")+'">'+ '<personasrotator:name>'+nameForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:name>'+ '<personasrotator:location>'+locationForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:location>'+ '<personasrotator:description>'+descriptionForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:description>'+ '<personasrotator:position>'+positionForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:position>'+ '<personasrotator:default>'+defaultForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:default>'+ '<personasrotator:tags>'+tagsForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:tags>'+ '<personasrotator:version>'+versionForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:version>'+ '<personasrotator:uploaded>'+uploadedForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:uploaded>'+ '<personasrotator:siteuri>'+siteURIForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:siteuri>'+ '<personasrotator:source>'+sourceForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:source>'+ '<personasrotator:screenres>'+screenResForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:screenres>'+ '<personasrotator:backgroundcolor>'+backgroundColorForImage.replace(/>/g,">").replace(/</g,"<")+'</personasrotator:backgroundcolor>'+ '</RDF:Description></RDF:RDF>'; var emptyRDFnsiFile=PersonasRotator.getChromeFile(PersonasRotator.createIndividualRDFFilename(filename)); PersonasRotatorFileIO.write(emptyRDFnsiFile,RDFstring,"w","UTF-8"); }, retrieveTagsFromSite:function (doc,collename) { var tagsArray=doc.getElementsByClassName("personasrotatortags"); var textLiteral=""; for (var i=0;i<tagsArray.length;i++) { if(i==tagsArray.length-1) continue; var tag=tagsArray[i].firstChild.nodeValue; if(tag.toLowerCase()==collename.toLowerCase()) { if(i==tagsArray.length-2) {textLiteral=textLiteral.replace(/,$/,"");} continue; } textLiteral+=tag+(i!=tagsArray.length-2 ? "," : ""); } return textLiteral; }, addImageResourceNodeToLibraryDatabase: function (chosencolname,filename,doc) { var imagename,imagelocation,imagedescription,imageposition,imagetags,imageversion,imageuploaded,imagesiteURI,imagesource,imagescreenRes,imagebackgroundColor; var preSource=""; var collename=filename.split("/")[0]; if(doc.defaultView.location.href.toString().search(/personasrotator\.com\/persona\/gallery/) !=-1 ){ preSource="site"; } if(preSource=="site"){ imagename = doc.getElementsByClassName("nameForImage")[0].firstChild.nodeValue; imagelocation = PersonasRotator.getTheLeafNameFromFileNameString(filename); imagedescription = doc.getElementsByClassName("personadescription")[0].textContent; imageposition = doc.defaultView.wrappedJSObject.PersonasRotatorPose.personasrotatorposition; imagetags=collename+","+PersonasRotator.retrieveTagsFromSite(doc,collename); imageversion="0.1"; imageuploaded="true"; imagesiteURI=doc.defaultView.location.href.toString(); imagesource="site"; imagescreenRes=doc.getElementById("pre_main_screenRes").className; imagebackgroundColor=doc.getElementById("pre_main_backgroundColor").className; } else { imagename = PersonasRotator.getTheLeafNameFromFileNameString(filename).replace(/\.\w+$/,""); imagelocation = PersonasRotator.getTheLeafNameFromFileNameString(filename); imagedescription = "undefined"; imageposition = PersonasRotator.retrievePersonaPositionForTheImage(filename); imagetags=filename.split("/")[0]; imageversion="0.1"; imageuploaded="false"; imagesiteURI="null"; imagesource="external"; imagescreenRes=screen.width+"x"+screen.height; imagebackgroundColor=PersonasRotator.retrieveDesktopBackgroundColor(); } var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getlibraryfileURI()); var newnode=PersonasRotatorRDF.rdfService.GetResource(PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename)); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#name" ),PersonasRotatorRDF.rdfService.GetLiteral( imagename ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#default" ),PersonasRotatorRDF.rdfService.GetLiteral( "false" ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#description" ),PersonasRotatorRDF.rdfService.GetLiteral( imagedescription ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#location" ),PersonasRotatorRDF.rdfService.GetLiteral( imagelocation ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#position" ),PersonasRotatorRDF.rdfService.GetLiteral( imageposition ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#tags" ),PersonasRotatorRDF.rdfService.GetLiteral( imagetags ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#version" ),PersonasRotatorRDF.rdfService.GetLiteral( imageversion),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#uploaded" ),PersonasRotatorRDF.rdfService.GetLiteral( imageuploaded),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#siteuri" ),PersonasRotatorRDF.rdfService.GetLiteral( imagesiteURI),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#source" ),PersonasRotatorRDF.rdfService.GetLiteral( imagesource),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#screenres" ),PersonasRotatorRDF.rdfService.GetLiteral( imagescreenRes),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#backgroundcolor" ),PersonasRotatorRDF.rdfService.GetLiteral( imagebackgroundColor),true); var mainSeq=PersonasRotatorRDF.rdfContainerUtils.MakeSeq(ds,PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator:"+PersonasRotator.createEncodedName(chosencolname)+"backs")); mainSeq.AppendElement(newnode); ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush(); }, addImageResourceNodeToCollectionDatabase: function (chosencolname,filename,doc) { var imagename,imagelocation,imagedescription,imageposition,imagetags,imageversion,imageuploaded,imagesiteURI,imagesource,imagescreenRes,imagebackgroundColor; var preSource=""; var collename=filename.split("/")[0]; if(doc.defaultView.location.href.toString().search(/personasrotator\.com\/persona\/gallery/) !=-1 ){ preSource="site"; } if(preSource=="site"){ imagename = doc.getElementsByClassName("nameForImage")[0].firstChild.nodeValue; imagelocation = PersonasRotator.getTheLeafNameFromFileNameString(filename); imagedescription = doc.getElementsByClassName("personadescription")[0].textContent; imageposition = doc.defaultView.wrappedJSObject.PersonasRotatorPose.personasrotatorposition; imagetags=collename+","+PersonasRotator.retrieveTagsFromSite(doc,collename); imageversion="0.1"; imageuploaded="true"; imagesiteURI=doc.defaultView.location.href.toString(); imagesource="site"; imagescreenRes=doc.getElementById("pre_main_screenRes").className; imagebackgroundColor=doc.getElementById("pre_main_backgroundColor").className; } else { imagename = PersonasRotator.getTheLeafNameFromFileNameString(filename).replace(/\.\w+$/,""); imagelocation = PersonasRotator.getTheLeafNameFromFileNameString(filename); imagedescription = "undefined"; imageposition = PersonasRotator.retrievePersonaPositionForTheImage(filename); imagetags=filename.split("/")[0]; imageversion="0.1"; imageuploaded="false"; imagesiteURI="null"; imagesource="external"; imagescreenRes=screen.width+"x"+screen.height; imagebackgroundColor=PersonasRotator.retrieveDesktopBackgroundColor(); } var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getTheURIFromFileName(PersonasRotator.createCollectionRDfFileName(filename))); var newnode=PersonasRotatorRDF.rdfService.GetResource(PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename)); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#name" ),PersonasRotatorRDF.rdfService.GetLiteral( imagename ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#default" ),PersonasRotatorRDF.rdfService.GetLiteral( "false" ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#description" ),PersonasRotatorRDF.rdfService.GetLiteral( imagedescription ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#location" ),PersonasRotatorRDF.rdfService.GetLiteral( imagelocation ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#position" ),PersonasRotatorRDF.rdfService.GetLiteral( imageposition ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#tags" ),PersonasRotatorRDF.rdfService.GetLiteral( imagetags ),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#version" ),PersonasRotatorRDF.rdfService.GetLiteral( imageversion),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#uploaded" ),PersonasRotatorRDF.rdfService.GetLiteral( imageuploaded),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#siteuri" ),PersonasRotatorRDF.rdfService.GetLiteral( imagesiteURI),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#source" ),PersonasRotatorRDF.rdfService.GetLiteral( imagesource),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#screenres" ),PersonasRotatorRDF.rdfService.GetLiteral( imagescreenRes),true); ds.Assert(newnode,PersonasRotatorRDF.rdfService.GetResource( "urn:personasrotator#backgroundcolor" ),PersonasRotatorRDF.rdfService.GetLiteral( imagebackgroundColor),true); var mainSeq=PersonasRotatorRDF.rdfContainerUtils.MakeSeq(ds,PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator:"+PersonasRotator.createEncodedName(chosencolname)+"backs")); mainSeq.AppendElement(newnode); ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush(); }, createCollectionRDfFileName:function(filename) { return filename.split("/")[0]+"/"+"Collection.rdf"; }, tryToPopulatePersonaWindow : function(chosencolname,filename) { var imagelocation=PersonasRotator.createThumbImageName(filename); var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); var enumerator = wm.getEnumerator(null); while(enumerator.hasMoreElements()) { var win = enumerator.getNext(); if (win.name=="PersonasRotatorWindow") { if (win.document.getElementById(encodeURI(chosencolname)+"button").getAttribute("clicked")=="true") { var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getlibraryfileURI()); var imagenamePredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#name"); var uri=PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename); var imageResource = PersonasRotatorRDF.rdfService.GetResource(uri); var imagenametarget=ds.GetTarget(imageResource,imagenamePredicate,true); if (imagenametarget) { var imagename = imagenametarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } var imagewrapperdiv=document.createElementNS("http://www.w3.org/1999/xhtml","html:div"); imagewrapperdiv.setAttribute("class","imagewrapperdiv"); imagewrapperdiv.style.width="180px"; imagewrapperdiv.style.height="155px"; imagewrapperdiv.style.cssFloat="left"; var namespan = win.document.createElement("box"); namespan.setAttribute("class","serdo imagespan"); namespan.setAttribute("ondblclick","PersonasWindow.ondoubleclick(event)"); namespan.setAttribute("onclick","PersonaWindowSelectManager.clicklistener(event)"); namespan.appendChild(document.createTextNode(imagename)); namespan.setAttribute("style","display:block;color:black;width:142px;height:"+(win.document.defaultView.getComputedStyle(namespan, null).getPropertyValue("line-height"))+";margin-top:-28px;text-align:center;overflow-y:hidden;overflow-x:hidden;padding:0 5px 0 5px;"); var imagenameanchor = namespan; var imageelement=document.createElement("image"); imageelement.setAttribute("src",PersonasRotator.assignFileURIToImage(imagelocation)); imageelement.setAttribute("class","personasrotatorimage"); imageelement.setAttribute("onclick","PersonaWindowSelectManager.clicklistener(event)"); imageelement.setAttribute("tooltiptext",imagename); imageelement.setAttribute("width","157"); imageelement.setAttribute("height","150"); imageelement.setAttribute("ondblclick","PersonasWindow.ondoubleclick(event)"); imageelement.setAttribute("filename",imagelocation); imagewrapperdiv.appendChild(imageelement); imagewrapperdiv.appendChild(imagenameanchor); if(win.document.getElementById(encodeURI(chosencolname)+"button").hasAttribute("fillspaceleft")) { if(win.PersonasWindow.fillspacestate && win.PersonasWindow.hasClass(win.document.getElementById(encodeURI(chosencolname)+"htmldiv"),"active")){ win.PersonasWindow.fillspacebackuparray.push(imagewrapperdiv); } } else { if(win.PersonasWindow.fillspacestate && win.PersonasWindow.hasClass(win.document.getElementById(encodeURI(chosencolname)+"htmldiv"),"active")){ win.PersonasWindow.fillspacebackuparray.push(imagewrapperdiv); } else if(!win.PersonasWindow.fillspacestate && win.PersonasWindow.hasClass(win.document.getElementById(encodeURI(chosencolname)+"htmldiv"),"active")){ win.document.getElementById(encodeURI(chosencolname)+"htmldiv").appendChild(imagewrapperdiv); } else if(win.PersonasWindow.fillspacestate && !win.PersonasWindow.hasClass(win.document.getElementById(encodeURI(chosencolname)+"htmldiv"),"active")){ win.document.getElementById(encodeURI(chosencolname)+"htmldiv").appendChild(imagewrapperdiv); } else if(!win.PersonasWindow.fillspacestate && !win.PersonasWindow.hasClass(win.document.getElementById(encodeURI(chosencolname)+"htmldiv"),"active")){ win.document.getElementById(encodeURI(chosencolname)+"htmldiv").appendChild(imagewrapperdiv); } } } } } }, refreshPreviewTabsArray:function() { PersonasRotator.previewtabscopy=[]; for (var i=0;i<PersonasRotator.previewtabs.length;i++) { if (gBrowser.selectedTab==PersonasRotator.previewtabs[i]) {continue;} else {PersonasRotator.previewtabscopy.push(PersonasRotator.previewtabs[i])} } if (PersonasRotator.previewtabs.length==1) PersonasRotator.previewtabs=[]; else PersonasRotator.previewtabs=PersonasRotator.previewtabscopy; }, showUploadOneTimeAlert:function(){ var personasrotatorprefsinstance = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var personasrotatoruploadonetimealertshowable = personasrotatorprefsinstance.getBoolPref("extensions.personasrotator.uploadonetimealertshowable"); if (personasrotatoruploadonetimealertshowable) { var check = {value: false}; var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService); prompt.alertCheck(null,"Personas Rotator",PersonasRotator.STRINGS.getString("uploadOneTimeAlertWarning"),PersonasRotator.STRINGS.getString("dontShowAgain"),check); if(check.value){ personasrotatorprefsinstance.setBoolPref("extensions.personasrotator.uploadonetimealertshowable", false); } } }, uploadPersona:function(event,doc){ var filename=PersonasRotator.retrievetabpersonaimage(doc); if (filename==undefined || filename==null ) {PersonasRotator.createAlertPrompt(PersonasRotator.STRINGS.getFormattedString("noPersona",["upload"]));return} var personaNsiFile=PersonasRotator.getChromeFile(filename); try{ if(personaNsiFile.fileSize>600*1024){PersonasRotator.createAlertPrompt(PersonasRotator.STRINGS.getFormattedString("overSizedWarning",[parseInt(personaNsiFile.fileSize/1024)]));return;}; } catch(err){ PersonasRotator.createAlertPrompt(PersonasRotator.STRINGS.getString("alreadyDeleted")); return; } var leafName=PersonasRotator.getTheLeafNameFromFileNameString(filename); var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getlibraryfileURI()); var uri=PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename); var imageResource = PersonasRotatorRDF.rdfService.GetResource(uri); var imageuploadedPredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#uploaded"); var imageuploadedtarget=ds.GetTarget(imageResource,imageuploadedPredicate,true); if (imageuploadedtarget) { var imageuploaded = imageuploadedtarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } doc.defaultView.personasrotatoruploaded=imageuploaded; if(imageuploaded=="true"){ if(PersonasRotator.createConfirmPrompt(PersonasRotator.STRINGS.getString("alreadyUploaded"))) { PersonasRotator.visitPersonaPage(event,doc); } return; } var imagenamePredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#name"); var imagenametarget=ds.GetTarget(imageResource,imagenamePredicate,true); if (imagenametarget) { var imagename = imagenametarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } doc.defaultView.personasrotatorname=imagename; var imagetagsPredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#tags"); var imagetagstarget=ds.GetTarget(imageResource,imagetagsPredicate,true); if (imagetagstarget) { var imagetags = imagetagstarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } doc.defaultView.personasrotatortags=imagetags; var imagedescriptionPredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#description"); var imagedescriptiontarget=ds.GetTarget(imageResource,imagedescriptionPredicate,true); if (imagedescriptiontarget) { var imagedescription = imagedescriptiontarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } doc.defaultView.personasrotatordescription=imagedescription; var imagepositionPredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#position"); var imagepositiontarget=ds.GetTarget(imageResource,imagepositionPredicate,true); if (imagepositiontarget) { var imageposition = imagepositiontarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } doc.defaultView.personasrotatorposition=imageposition; var imagebackgroundColorPredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#backgroundcolor"); var imagebackgroundColortarget=ds.GetTarget(imageResource,imagebackgroundColorPredicate,true); if (imagebackgroundColortarget) { var imagebackgroundColor = imagebackgroundColortarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } doc.defaultView.personasrotatorbackgroundColor=imagebackgroundColor; var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var uri = ios.newURI("http://personasrotator.com/", null, null); var cookieSvc = Components.classes["@mozilla.org/cookieService;1"] .getService(Components.interfaces.nsICookieService); var cookie = cookieSvc.getCookieString(uri, null); if (cookie!=null && cookie.indexOf("memberID=")!=-1) { var medProfId=cookie.split("memberID=")[1].split(";")[0]; } else { if(PersonasRotator.createConfirmPrompt(PersonasRotator.STRINGS.getString("logInWarning"))) { window.gBrowser.selectedTab = window.gBrowser.addTab("http://personasrotator.com/member.php"); return ; } else { return; } } var personasrotatorprefsinstance = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var prefilluploadform = personasrotatorprefsinstance.getBoolPref("extensions.personasrotator.prefilluploadform"); doc.removeEventListener("mousedown",PersonasRotator.mouseclickondocument,false); doc.removeEventListener("mouseup",PersonasRotator.mouseupondocument,false); PersonasRotator.showUploadOneTimeAlert(); var MIMEService = Components.classes["@mozilla.org/mime;1"] .getService(Components.interfaces.nsIMIMEService); var personaMIMEType=MIMEService.getTypeFromFile(personaNsiFile); var formtext='<div id="paddingtopdiv">' +'<div id="personasrotatoruploadform">' +'<form id="form" name="form" method="post" enctype="multipart/form-data">' +'<span id="closeanchor" title="Close the upload form">Close</span>' +'<span id="uploadheading">Upload form</span>' +'<p>Please fill out the form below before you upload</p>' +'<label>Name<span class="tip">Add persona name</span></label>' +'<input type="text" name="title" id="personaname" value="'+(!prefilluploadform ? "" : imagename)+'"/><span class="tooltipicons" id="nametooltipicon">Tooltip</span>' +'<label>Tags<span class="tip">Add persona tags</span></label>' +'<input type="text" name="tags" id="personatags" value="'+(!prefilluploadform ? "" : imagetags)+'"/><span class="tooltipicons" id="tagtooltipicon">Tooltip</span>' +'<label>Description<span class="tip">Add persona description</span></label>' +'<textarea type="text" name="description" id="personadescription" >'+(!prefilluploadform ? "" : ((imagedescription=="undefined") ? "" : imagedescription))+'</textarea>' +'<span class="tooltipicons" id="descriptiontooltipicon">Tooltip</span>' +'<input type="hidden" id="position" name="position" value="'+imageposition+'"/>' +'<input type="hidden" id="screenRes" name="screenRes" value="'+screen.width+"x"+screen.height+'"/>' +'<input type="hidden" id="backgroundColor" name="backgroundColor" value="'+imagebackgroundColor+'"/>' +'<input type="hidden" value="'+medProfId+'" id="medProfId" name="medProfId"/>' +'<input type="file" id="personafile" name="uploadFile" />' +'<button type="submit" id="submitbutton" name="upload">Upload</button>' +'</form>' +'</div>' +'</div>'; var tooltiptext='<div class="tooltipdivs" id="nametooltipdiv"><p>'+PersonasRotator.STRINGS.getString("nameDescription")+'</p></div><div class="tooltipdivs" id="tagtooltipdiv"><p>'+PersonasRotator.STRINGS.getString("tagDescription")+'</p></div><div class="tooltipdivs" id="descriptiontooltipdiv"><p>'+PersonasRotator.STRINGS.getString("descriptionDescription")+'</p></div>'; doc.body.innerHTML=formtext+tooltiptext; doc.defaultView.personaRotator={personaMIMEType:personaMIMEType}; var createdAjaxScript=doc.createElement("script"); createdAjaxScript.setAttribute("type","text/javascript"); createdAjaxScript.setAttribute("src","chrome://personasrotator/content/ajaxUpload.js"); doc.body.appendChild(createdAjaxScript); PersonasRotator.addClass(doc.body,"uploadformshowing"); var bodyheight=doc.body.clientHeight; var formheight=275; doc.getElementById("personafile").value=personaNsiFile.path; doc.getElementById("personasrotatoruploadform").style.marginTop=((bodyheight-formheight)*0.5)+"px"; doc.getElementById("closeanchor").addEventListener("click",function(event){ this.ownerDocument.body.innerHTML=""; PersonasRotator.removeClass(doc.body,"uploadformshowing"); doc.addEventListener("mousedown",PersonasRotator.mouseclickondocument,false); doc.addEventListener("mouseup",PersonasRotator.mouseupondocument,false); event.preventDefault(); },false); doc.addEventListener("personasrotatorUploadedTrue",PersonasRotator.handleAfterPersonaUploadRequirements,false); }, handleAfterPersonaUploadRequirements:function(event){ var doc; if (event.target.nodeName=="#document") { doc=event.target; try { var documentURI=doc.documentURI; } catch (err) { return; } if (!documentURI) { PersonasRotator.createAlertPrompt("documentURI"+" is problematic"); } if (documentURI == "chrome://personasrotator/content/wr.html") { var filename=PersonasRotator.retrievetabpersonaimage(doc); var retrievedSiteURI=doc.defaultView.personasrotatorretrievedSiteURI; PersonasRotator.updatePredicates("Individual",{uploaded:"true",source:"upload",siteuri:retrievedSiteURI},filename,doc); PersonasRotator.updatePredicates("Library",{uploaded:"true",source:"upload",siteuri:retrievedSiteURI},filename,doc); PersonasRotator.updatePredicates("Collection",{uploaded:"true",source:"upload",siteuri:retrievedSiteURI},filename,doc); var redirectionScript=doc.createElement("script"); redirectionScript.setAttribute("type","text/javascript"); redirectionScript.innerHTML="window.location='"+retrievedSiteURI+"';"; doc.body.appendChild(redirectionScript); } } }, morelikethis:function(event,doc){ var filename=PersonasRotator.retrievetabpersonaimage(doc); var leafName=filename.split("/")[0]; gBrowser.selectedTab = gBrowser.addTab('http://personasrotator.com/persona/gallery_tag/'+encodeURIComponent(leafName)); }, visitPersonaPage:function(event,doc){ var filename=PersonasRotator.retrievetabpersonaimage(doc); if (filename==undefined || filename==null ) {PersonasRotator.createAlertPrompt(PersonasRotator.STRINGS.getFormattedString("noPersona",["visit"]));return;} var leafName=PersonasRotator.getTheLeafNameFromFileNameString(filename); var ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getlibraryfileURI()); var uri=PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename); var imageResource = PersonasRotatorRDF.rdfService.GetResource(uri); var imagesourcePredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#source"); var imagesourcetarget=ds.GetTarget(imageResource,imagesourcePredicate,true); if (imagesourcetarget) { var imagesource = imagesourcetarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } else { PersonasRotator.createAlertPrompt(PersonasRotator.STRINGS.getString("alreadyDeleted")); return; } if(imagesource=="site"||imagesource=="upload"){ var imagesiteuriPredicate = PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#siteuri"); var imagesiteuritarget=ds.GetTarget(imageResource,imagesiteuriPredicate,true); if (imagesiteuritarget) { var imagesiteuri = imagesiteuritarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } gBrowser.selectedTab = gBrowser.addTab(imagesiteuri); } else { PersonasRotator.createAlertPrompt(PersonasRotator.STRINGS.getString("onlyPRPersonas")); } }, createAlertPrompt:function(promptString){ var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] .getService(Components.interfaces.nsIPromptService); prompt.alert(null, "Personas Rotator",promptString); }, createConfirmPrompt:function(promptString){ var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] .getService(Components.interfaces.nsIPromptService); return prompt.confirm(null, "Personas Rotator",promptString); }, installMoreOpen:function(){ gBrowser.selectedTab = gBrowser.addTab('http://personasrotator.com/persona/gallery_tag/'+screen.width+'x'+screen.height+'?imo'); }, PersonasRotatorWindowChecknOpen:function() { var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); var enumerator = wm.getEnumerator(null); var win; while(enumerator.hasMoreElements()) { win = enumerator.getNext(); if (win.name=="PersonasRotatorWindow") { win.focus(); return; } } window.openDialog('chrome://personasrotator/content/personas.xul','PersonasRotatorWindow','chrome,close=yes,minimizable=yes,centerscreen'); }, createEncodedName:function(passedDecodedName){ if(passedDecodedName==undefined) return; var namesplitarray=passedDecodedName.split("/"); var encodedname=""; for (var i=0;i<namesplitarray.length;i++) { encodedname+=encodeURI(namesplitarray[i]); encodedname+=(i!=namesplitarray.length-1) ? "/" : ""; } return encodedname; }, createDecodedName:function(passedEncodedName){ if(passedEncodedName==undefined) return; var namesplitarray=passedEncodedName.split("/"); var decodedname=""; for (var i=0;i<namesplitarray.length;i++) { decodedname+=decodeURI(namesplitarray[i]); decodedname+=((i!=namesplitarray.length-1) ? "/" : ""); } return decodedname; }, getMainPersonaDirectoryFileURL:function() { var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("personasrotator"); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var URL = ios.newFileURI(file); return URL.spec; }, browserOpenNews:function (event) { if (true) { var newTab = gBrowser.loadOneTab("chrome://personasrotator/content/cc.html", null, null, null, false, false); newTab.linkedBrowser.userTypedValue = undefined; if (gURLBar) { setTimeout(function () {gURLBar.focus();}, 0); } } else { window.originalBrowserOpenTab(event); } }, bringNews:function(){ window.BrowserOpenTab=PersonasRotator.browserOpenNews; }, browserOpenTab:function (event) { if (true) { var newTab = gBrowser.loadOneTab(PersonasRotator.openTabURI, null, null, null, false, false); newTab.linkedBrowser.userTypedValue = undefined; if (gURLBar) { setTimeout(function () {gURLBar.focus();}, 0); } } else { window.originalBrowserOpenTab(event); } }, bringPersonas:function(){ if(window.TMP_BrowserOpenTab){ getBrowser().removeEventListener("NewTab", window.TMP_BrowserOpenTab, true); window.originalBrowserOpenTab = window.TMP_BrowserOpenTab; window.TMP_BrowserOpenTab = PersonasRotator.browserOpenTab; getBrowser().addEventListener("NewTab", window.TMP_BrowserOpenTab, true); } else if (window.TBP_BrowserOpenTab) { getBrowser().removeEventListener("NewTab", window.TBP_BrowserOpenTab, true); window.originalBrowserOpenTab = window.TBP_BrowserOpenTab; window.TBP_BrowserOpenTab = PersonasRotator.browserOpenTab; getBrowser().addEventListener("NewTab", window.TBP_BrowserOpenTab, true); } else { getBrowser().removeEventListener("NewTab", window.BrowserOpenTab, false); window.originalBrowserOpenTab = window.BrowserOpenTab; window.BrowserOpenTab = PersonasRotator.browserOpenTab; getBrowser().addEventListener("NewTab", window.BrowserOpenTab, false); } }, prepareForNewsTab:function(){ PersonasRotator.bringNews(); }, createDecodedNameFromFileURI:function(passedEncodedFileURIName){ var namesplitarray=passedEncodedFileURIName.split("/"); var decodedname=""; for (var i=0;i<namesplitarray.length;i++) { var mainPersonaDirectoryFileURL=PersonasRotator.getMainPersonaDirectoryFileURL(); var io = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var URL=io.newURI(mainPersonaDirectoryFileURL+namesplitarray[i], "UTF8", null); var file = URL.QueryInterface(Components.interfaces.nsIFileURL) .file; decodedname+=file.leafName+((i!=namesplitarray.length-1) ? "/" : ""); } return decodedname; }, URLBarSetURI: URLBarSetURI, newURLBarSetURI: function (uri, valid) { if (!uri || !(new RegExp("chrome://personasrotator/content/wr.html")).test(uri.spec)) { return PersonasRotator.URLBarSetURI(uri, valid); } var nsiUri = Components.classes['@mozilla.org/network/simple-uri;1'].createInstance(Components.interfaces.nsIURI); nsiUri.spec = "about:blank"; PersonasRotator.URLBarSetURI(nsiUri); SetPageProxyState("valid"); }, updatePredicates:function(database,hash,filename,doc){ var ds; if(database=="Individual"){ ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getTheURIFromFileName(PersonasRotator.createIndividualRDFFilename(filename))); } if(database=="Library"){ ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getlibraryfileURI()); } if(database=="Collection"){ ds=PersonasRotatorRDF.rdfService.GetDataSourceBlocking(PersonasRotator.getTheURIFromFileName(PersonasRotator.createCollectionRDfFileName(filename))); } var leafName=PersonasRotator.getTheLeafNameFromFileNameString(filename); var theImageNode = PersonasRotatorRDF.rdfService.GetResource(PersonasRotator.databaseResourceSiteName+PersonasRotator.createEncodedName(filename)); var updatePredicateName; for (var property in hash){ updatePredicateName=property; var updatePredicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#"+updatePredicateName); var updatetarget=ds.GetTarget(theImageNode,updatePredicate,true); if (updatetarget!=null) var updateTargetValue= updatetarget.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; else {return} var newUpdateTargetValue=hash[property]; var predicate=PersonasRotatorRDF.rdfService.GetResource("urn:personasrotator#"+updatePredicateName); var oldtarget=PersonasRotatorRDF.rdfService.GetLiteral(updateTargetValue); var newtarget=PersonasRotatorRDF.rdfService.GetLiteral(newUpdateTargetValue); ds.Change(theImageNode,predicate,oldtarget,newtarget); } try{ ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush(); } catch(err){ } }, findTheHorizontalCenterOfTheImage:function(imagewidth){ return imagewidth*(0.5); }, findTheHorizontalCenterOfTheScreen:function(paddingnode){ return paddingnode.clientWidth*(0.5); }, findHorizontalPositionOffset:function(image,imagewidth,paddingnode){ return PersonasRotator.findTheHorizontalCenterOfTheScreen(paddingnode)-PersonasRotator.findTheHorizontalCenterOfTheImage(imagewidth); }, findTheVerticalCenterOfTheImage:function(imageheight){ return imageheight*(0.5); }, findTheVerticalCenterOfTheScreen:function(paddingnode){ return paddingnode.clientHeight*(0.5); }, findVerticalPositionOffset:function(image,imageheight,paddingnode){ return PersonasRotator.findTheVerticalCenterOfTheScreen(paddingnode)-PersonasRotator.findTheVerticalCenterOfTheImage(imageheight); }, //ADDED ONES requestDesktopPersonaChange:function(){ PersonasRotator.changeDesktopPersona(); }, changeDesktopPersona:function(previewRequestObject){ var deskWall=new Image(); if(previewRequestObject!=null) { PersonasRotator.imagespecified="yes"; if(previewRequestObject.filename) PersonasRotator.currentimagefilename=previewRequestObject.filename; } if(PersonasRotator.imagespecified=="no"){ if (PersonasRotator.currentarrayindex<PersonasRotator.personasrotator.length) { PersonasRotator.currentimagefilename=PersonasRotator.personasrotator[PersonasRotator.currentarrayindex]; PersonasRotator.currentarrayindex++; } else { PersonasRotator.currentarrayindex=0; PersonasRotator.currentimagefilename=PersonasRotator.personasrotator[PersonasRotator.currentarrayindex]; PersonasRotator.currentarrayindex++; } PersonasRotator.writelastimageindex(); } if(PersonasRotator.imagespecified!="no") PersonasRotator.imagespecified="no"; if (previewRequestObject==null){ deskWall.src=PersonasRotator.assignFileURIToImage(PersonasRotator.currentimagefilename); } else if(previewRequestObject!=null){ deskWall.src=(previewRequestObject.filename!=null) ? PersonasRotator.assignFileURIToImage(PersonasRotator.currentimagefilename) : previewRequestObject.url; } deskWall.onload=function() { try { if(previewRequestObject==null){ var personaDesktopBackgroundColor=parseInt(PersonasRotator.retrievePersonaBackgroundColorForTheImage(PersonasRotator.currentimagefilename)); if(PersonasRotator._shell.desktopBackgroundColor!=personaDesktopBackgroundColor) PersonasRotator._shell.desktopBackgroundColor=personaDesktopBackgroundColor; PersonasRotator._shell.setDesktopBackground(deskWall,Components.interfaces.nsIShellService["BACKGROUND_" + PersonasRotator.retrievePersonaPositionForTheImage(PersonasRotator.currentimagefilename)]); } else if (previewRequestObject!=null) { if(previewRequestObject.filename==null){ var personaDesktopBackgroundColor=parseInt(previewRequestObject.backgroundColor); if(PersonasRotator._shell.desktopBackgroundColor!=personaDesktopBackgroundColor) PersonasRotator._shell.desktopBackgroundColor=personaDesktopBackgroundColor; PersonasRotator._shell.setDesktopBackground(deskWall,Components.interfaces.nsIShellService["BACKGROUND_" + previewRequestObject.position]); } else if(previewRequestObject.filename!=null){ var personaDesktopBackgroundColor=parseInt(PersonasRotator.retrievePersonaBackgroundColorForTheImage(PersonasRotator.currentimagefilename)); if(PersonasRotator._shell.desktopBackgroundColor!=personaDesktopBackgroundColor) PersonasRotator._shell.desktopBackgroundColor=personaDesktopBackgroundColor; PersonasRotator._shell.setDesktopBackground(deskWall,Components.interfaces.nsIShellService["BACKGROUND_" + PersonasRotator.retrievePersonaPositionForTheImage(PersonasRotator.currentimagefilename)]); } } } catch(err){ /* var aConsoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService); var bb="ERROR:"+"\n"+"deskwallSRC: "+deskWall.src+"\n"+"Index: "+PersonasRotator.currentarrayindex+"\n"+"NewSRC: "+PersonasRotator.newimage.src; aConsoleService.logStringMessage(bb); */ } } if (PersonasRotator.currentarrayindex==PersonasRotator.personasrotator.length ) { PersonasRotator.newimage.src=PersonasRotator.assignFileURIToImage(PersonasRotator.personasrotator[0]); } else { PersonasRotator.newimage.src=PersonasRotator.assignFileURIToImage(PersonasRotator.personasrotator[PersonasRotator.currentarrayindex]); } /* var aConsoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService); var bb="deskwallSRC: "+deskWall.src+"\n"+"Index: "+PersonasRotator.currentarrayindex+"\n"+"NewSRC: "+PersonasRotator.newimage.src; aConsoleService.logStringMessage(bb); */ }, enableRotation:function(source){ if(source==null) PersonasRotator.changeMenuOptionForEnableRotation(); var personasrotatorprefsinstance = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var personasrotatorrotationinterval = personasrotatorprefsinstance.getIntPref("extensions.personasrotator.rotationinterval"); PersonasRotator.PR.initializeTimer(personasrotatorrotationinterval,true); }, changeMenuOptionForEnableRotation:function(){ var personasrotatorprefsinstance = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var rotationenabled = personasrotatorprefsinstance.getBoolPref("extensions.personasrotator.rotationenabled"); var sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService); var ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService); var css = "@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);#personasrotator-"+("enable")+"rotation{display:none !important;}"; var css2 = "@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);#personasrotator-"+("disable")+"rotation{display:none !important;}"; var uri = ios.newURI("data:text/css," + css, null, null); var uri2 = ios.newURI("data:text/css," + css2, null, null); if (sss.sheetRegistered(uri2, sss.USER_SHEET)) { sss.unregisterSheet(uri2, sss.USER_SHEET); } if (!sss.sheetRegistered(uri, sss.USER_SHEET)) { sss.loadAndRegisterSheet(uri, sss.USER_SHEET); } personasrotatorprefsinstance.setBoolPref("extensions.personasrotator.rotationenabled",true); }, changeMenuOptionForDisableRotation:function(){ var personasrotatorprefsinstance = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var rotationenabled = personasrotatorprefsinstance.getBoolPref("extensions.personasrotator.rotationenabled"); var sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService); var ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService); var css = "@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);#personasrotator-"+("disable")+"rotation{display:none !important;}"; var css2 = "@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);#personasrotator-"+("enable")+"rotation{display:none !important;}"; var uri = ios.newURI("data:text/css," + css, null, null); var uri2 = ios.newURI("data:text/css," + css2, null, null); if (sss.sheetRegistered(uri2, sss.USER_SHEET)) { sss.unregisterSheet(uri2, sss.USER_SHEET); } if (!sss.sheetRegistered(uri, sss.USER_SHEET)) { sss.loadAndRegisterSheet(uri, sss.USER_SHEET); } personasrotatorprefsinstance.setBoolPref("extensions.personasrotator.rotationenabled",false); }, disableRotation:function(source){ if(source==null) PersonasRotator.changeMenuOptionForDisableRotation(); PersonasRotator.PR.cancelTimer(); }, updateRotationInterval:function(passedTime){ PersonasRotator.PR.cancelTimer(); PersonasRotator.PR.initializeTimer(passedTime,true); }, previewThePersonaOnDesktop:function(previewRequestObject){ PersonasRotator.disableRotation("web"); if(PersonasRotator.previewTimer!=null) PersonasRotator.previewTimer.cancel(); PersonasRotator.changeDesktopPersona(previewRequestObject); //show for 30 seconds var event = { notify: function(timer) { var personasrotatorprefsinstance = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var rotationenabled = personasrotatorprefsinstance.getBoolPref("extensions.personasrotator.rotationenabled"); if(rotationenabled){ PersonasRotator.changeDesktopPersona(); PersonasRotator.enableRotation("web"); } } } PersonasRotator.previewTimer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer); PersonasRotator.previewTimer.initWithCallback(event,30000,Components.interfaces.nsITimer.TYPE_ONE_SHOT); }, retrieveBackgroundColor: function (passedColor){ var color = parseInt(passedColor); const rMask = 4294901760; const gMask = 65280; const bMask = 255; var r = (color & rMask) >> 16; var g = (color & gMask) >> 8; var b = (color & bMask); return (PersonasRotator.rgbToHex(r, g, b)); }, rgbToHex: function (aR, aG, aB){ return "#" + [aR, aG, aB].map(function(aInt) aInt.toString(16).replace(/^(.)$/, "0$1")).join("").toUpperCase(); } } //when we copy the personasrotator directory, this should be uncommented. //PersonasRotator.preload(); //PersonasRotator.bringPersonas(); //URLBarSetURI = PersonasRotator.newURLBarSetURI; window.addEventListener("load",PersonasRotator.mainWindowLoadHandler,false);